package com.zhishu.maker.meta;

import cn.hutool.core.io.resource.ResourceUtil;
import cn.hutool.json.JSONUtil;

/**
 * @Author: 止束
 * @Version: 1.0
 * @DateTime: 2025/1/10 18:54
 * @Description:
 */
public class MetaManager {
    private static volatile Meta meta;

    public static Meta getMetaObject() {
        //这里使用双检锁单例模式
        if (meta == null) {
            synchronized (MetaManager.class) {
                if (meta == null) {
                    meta = initMeta();
                }
            }
        }
        return meta;
    }

    private static Meta initMeta() {
        //读取 resources 下的 meta.json 字符串文件
        //String metaJson = ResourceUtil.readUtf8Str("meta.json");
        String metaJson = ResourceUtil.readUtf8Str("springboot-init-meta.json");
        //将 json 字符串转为 json 对象
        Meta newMeta = JSONUtil.toBean(metaJson, Meta.class);
        //校验配置文件，处理默认值
        MetaValidator.doValidAndFill(newMeta);
        return newMeta;
    }
}
